
#include "test.h"
#include "stdio.h"
#include "device.h"


U32 gauiTask1Stack[TASKSTACK];      /* 任务1的栈 */
U32 gauiTask2Stack[TASKSTACK];      /* 任务2的栈 */


/***********************************************************************************
函数功能: 主函数, C程序从此函数开始运行. 该函数创建任务并从非任务状态切换到任务状态
          运行.
入口参数: none.
返 回 值: 返回值为0, 但系统不会运行到该函数返回.
***********************************************************************************/
 S32 main(void)
 {
     /**************************************************************************/
     /*            更多资料请访问    www.ifreecoding.com                       */
     /*                              bbs.ifreecoding.com                       */
     /*                              blog.sina.com.cn/ifreecoding              */
     /**************************************************************************/

     /* 初始化软件 */
     DEV_SoftwareInit();

     /* 初始化硬件 */
     DEV_HardwareInit();

     /* 创建任务 */
     gpstrTask1Tcb = WLX_TaskInit(TEST_TestTask1, TEST_GetTaskInitSp(1));
     gpstrTask2Tcb = WLX_TaskInit(TEST_TestTask2, TEST_GetTaskInitSp(2));

     /* 开始任务调度 */
     WLX_TaskStart();

     return 0;
 }

/***********************************************************************************
函数功能: 测试任务切换函数1, 向串口打印任务字符串, 向LCD屏打印任务切换图形.
入口参数: none.
返 回 值: none.
***********************************************************************************/
void TEST_TestTask1(void)
{
    while(1)
    {
        /* 任务打印信息 */
        printf("task1\n");

        /* 任务运行1秒 */
        TEST_TaskRun(1000);

        /* 任务切换 */
        WLX_TaskSwitch();
    }
}

/***********************************************************************************
函数功能: 测试任务切换函数2, 向串口打印任务字符串, 向LCD屏打印任务切换图形.
入口参数: none.
返 回 值: none.
***********************************************************************************/
void TEST_TestTask2(void)
{
    while(1)
    {
        /* 任务打印信息 */
        printf("task 2\n");

        /* 任务运行2秒 */
        TEST_TaskRun(2000);

        /* 任务切换 */
        WLX_TaskSwitch();
    }
}

/***********************************************************************************
函数功能: 获取任务的初始化栈指针.
入口参数: ucTask: 运行的任务, 1或者2.
返 回 值: 栈的高地址.
***********************************************************************************/
U32* TEST_GetTaskInitSp(U8 ucTask)
{
    if(1 == ucTask)
    {
        return (gauiTask1Stack + TASKSTACK);
    }
    else //if(2 == ucTask)
    {
        return (gauiTask2Stack + TASKSTACK);
    }
}

/***********************************************************************************
函数功能: 模拟任务运行函数, 并更新任务运行时间.
入口参数: uiMs: 要延迟的时间, 单位ms.
返 回 值: none.
***********************************************************************************/
void TEST_TaskRun(U32 uiMs)
{
    /* 用延迟时间模拟任务运行时间 */
    DEV_DelayMs(uiMs);

    /* 增加任务运行时间 */
    //DEV_AddTaskTime(uiMs);
}

